package ophiux.wechatpay.sdk.response;

import ophiux.wechatpay.sdk.common.parse.FieldKey;

/**
 * 查询订单  返回参数
 * <br/>请求地址:
 * <br/><h1>创建人: hehailong</h1><br/>
 * 创建时间：2017-7-7下午3:31:09<br/>
 * 修改记录1：
 */
public class OrderQueryResponse extends OphiuxResponse {
	
	
	//以下字段在return_code 、result_code、trade_state都为SUCCESS时有返回 ，如trade_state不为 SUCCESS，则只返回out_trade_no（必传）和attach（选传）。
	//变量名	字段名	必填	类型	示例值	描述
	@FieldKey("device_info")
	private String device_info;//	设备号	否	String(32)	013467007045764	微信支付分配的终端设备号，
	@FieldKey("openid")
	private String openid;//	用户标识	是	String(128)	oUpF8uMuAJO_M2pxb1Q9zNjWeS6o	用户在商户appid下的唯一标识
	@FieldKey("is_subscribe")
	private String is_subscribe;//	是否关注公众账号	否	String(1)	Y	用户是否关注公众账号，Y-关注，N-未关注，仅在公众账号类型支付有效
	@FieldKey("trade_type")
	private String trade_type;//	交易类型	是	String(16)	JSAPI	调用接口提交的交易类型，取值如下：JSAPI，NATIVE，APP，MICROPAY，详细说明见参数规定
	/**
	 * 交易状态	是	String(32)	SUCCESS	
		SUCCESS—支付成功
		REFUND—转入退款
		NOTPAY—未支付
		CLOSED—已关闭
		REVOKED—已撤销（刷卡支付）
		USERPAYING--用户支付中
		PAYERROR--支付失败(其他原因，如银行返回失败)
	 */
	@FieldKey("trade_state")
	private String trade_state;	
	@FieldKey("bank_type")
	private String bank_type;//	付款银行	是	String(16)	CMC	银行类型，采用字符串类型的银行标识
	@FieldKey("total_fee")
	private int total_fee;//	标价金额	是	Int	100	订单总金额，单位为分
	@FieldKey("settlement_total_fee")
	private int settlement_total_fee;//	应结订单金额	否	Int	100	当订单使用了免充值型优惠券后返回该参数，应结订单金额=订单金额-免充值优惠券金额。
	@FieldKey("fee_type")
	private String fee_type;//	标价币种	否	String(8)	CNY	货币类型，符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
	@FieldKey("cash_fee")
	private int cash_fee;//	现金支付金额	是	Int	100	现金支付金额订单现金支付金额，详见支付金额
	@FieldKey("cash_fee_type")
	private String cash_fee_type;//	现金支付币种	否	String(16)	CNY	货币类型，符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
	@FieldKey("coupon_fee")
	private int coupon_fee;//	代金券金额	否	Int	100	“代金券”金额<=订单金额，订单金额-“代金券”金额=现金支付金额，详见支付金额
	@FieldKey("coupon_count")
	private int coupon_count;//	代金券使用数量	否	Int	1	代金券使用数量
	@FieldKey("coupon_type_$n")
	private String coupon_type_$n;//	代金券类型	否	String	CASH	CASH--充值代金券     NO_CASH---非充值优惠券   开通免充值券功能，并且订单使用了优惠券后有返回（取值：CASH、NO_CASH）。$n为下标,从0开始编号，举例：coupon_type_$0
	@FieldKey("coupon_id_$n")
	private String coupon_id_$n;//	代金券ID	否	String(20)	10000 	代金券ID, $n为下标，从0开始编号
	@FieldKey("coupon_fee_$n")
	private int coupon_fee_$n;//	单个代金券支付金额	否	Int	100	单个代金券支付金额, $n为下标，从0开始编号
	@FieldKey("transaction_id")
	private String transaction_id;//	微信支付订单号	是	String(32)	1009660380201506130728806387	微信支付订单号
	@FieldKey("out_trade_no")
	private String out_trade_no;//	商户订单号	是	String(32)	20150806125346	商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。
	@FieldKey("attach")
	private String attach;//	附加数据	否	String(128)	深圳分店	附加数据，原样返回
	@FieldKey("time_end")
	private String time_end;//	支付完成时间	是	String(14)	20141030133525	订单支付时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
	@FieldKey("trade_state_desc")
	private String trade_state_desc;//	交易状态描述	是	String(256)	支付失败，请重新下单支付	对当前查询订单状态的描述和下一步操作的指引
	
	//服务商
	@FieldKey("detail")
	private String detail;//商品详情 detail 否  String(8192)  
	
	//hhl 2020-8-5  优惠
	private String coupon_id;//代金券ID
	private String coupon_id_0;//代金券ID
	
	@Override
	public String toString() {
		return "OrderQueryResponse [device_info=" + device_info + ", openid="
				+ openid + ", is_subscribe=" + is_subscribe + ", trade_type="
				+ trade_type + ", trade_state=" + trade_state + ", bank_type="
				+ bank_type + ", total_fee=" + total_fee
				+ ", settlement_total_fee=" + settlement_total_fee
				+ ", fee_type=" + fee_type + ", cash_fee=" + cash_fee
				+ ", cash_fee_type=" + cash_fee_type + ", coupon_fee="
				+ coupon_fee + ", coupon_count=" + coupon_count
				+ ", coupon_type_$n=" + coupon_type_$n + ", coupon_id_$n="
				+ coupon_id_$n + ", coupon_fee_$n=" + coupon_fee_$n
				+ ", transaction_id=" + transaction_id + ", out_trade_no="
				+ out_trade_no + ", attach=" + attach + ", time_end="
				+ time_end + ", trade_state_desc=" + trade_state_desc
				+ ", detail=" + detail + ", toString()=" + super.toString()
				+ "]";
	}
	
	
	
	
	public String getDevice_info() {
		return device_info;
	}
	public void setDevice_info(String device_info) {
		this.device_info = device_info;
	}
	public String getOpenid() {
		return openid;
	}
	public void setOpenid(String openid) {
		this.openid = openid;
	}
	public String getIs_subscribe() {
		return is_subscribe;
	}
	public void setIs_subscribe(String is_subscribe) {
		this.is_subscribe = is_subscribe;
	}
	public String getTrade_type() {
		return trade_type;
	}
	public void setTrade_type(String trade_type) {
		this.trade_type = trade_type;
	}
	public String getTrade_state() {
		return trade_state;
	}
	public void setTrade_state(String trade_state) {
		this.trade_state = trade_state;
	}
	public String getBank_type() {
		return bank_type;
	}
	public void setBank_type(String bank_type) {
		this.bank_type = bank_type;
	}
	public int getTotal_fee() {
		return total_fee;
	}
	public void setTotal_fee(int total_fee) {
		this.total_fee = total_fee;
	}
	public int getSettlement_total_fee() {
		return settlement_total_fee;
	}
	public void setSettlement_total_fee(int settlement_total_fee) {
		this.settlement_total_fee = settlement_total_fee;
	}
	public String getFee_type() {
		return fee_type;
	}
	public void setFee_type(String fee_type) {
		this.fee_type = fee_type;
	}
	public int getCash_fee() {
		return cash_fee;
	}
	public void setCash_fee(int cash_fee) {
		this.cash_fee = cash_fee;
	}
	public String getCash_fee_type() {
		return cash_fee_type;
	}
	public void setCash_fee_type(String cash_fee_type) {
		this.cash_fee_type = cash_fee_type;
	}
	public int getCoupon_fee() {
		return coupon_fee;
	}
	public void setCoupon_fee(int coupon_fee) {
		this.coupon_fee = coupon_fee;
	}
	public int getCoupon_count() {
		return coupon_count;
	}
	public void setCoupon_count(int coupon_count) {
		this.coupon_count = coupon_count;
	}
	public String getCoupon_type_$n() {
		return coupon_type_$n;
	}
	public void setCoupon_type_$n(String coupon_type_$n) {
		this.coupon_type_$n = coupon_type_$n;
	}
	public String getCoupon_id_$n() {
		return coupon_id_$n;
	}
	public void setCoupon_id_$n(String coupon_id_$n) {
		this.coupon_id_$n = coupon_id_$n;
	}
	public int getCoupon_fee_$n() {
		return coupon_fee_$n;
	}
	public void setCoupon_fee_$n(int coupon_fee_$n) {
		this.coupon_fee_$n = coupon_fee_$n;
	}
	public String getTransaction_id() {
		return transaction_id;
	}
	public void setTransaction_id(String transaction_id) {
		this.transaction_id = transaction_id;
	}
	public String getOut_trade_no() {
		return out_trade_no;
	}
	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}
	public String getAttach() {
		return attach;
	}
	public void setAttach(String attach) {
		this.attach = attach;
	}
	public String getTime_end() {
		return time_end;
	}
	public void setTime_end(String time_end) {
		this.time_end = time_end;
	}
	public String getTrade_state_desc() {
		return trade_state_desc;
	}
	public void setTrade_state_desc(String trade_state_desc) {
		this.trade_state_desc = trade_state_desc;
	}
	public String getDetail() {
		return detail;
	}
	public void setDetail(String detail) {
		this.detail = detail;
	}

	public String getCoupon_id() {
		return coupon_id;
	}
	public void setCoupon_id(String coupon_id) {
		this.coupon_id = coupon_id;
	}
	public String getCoupon_id_0() {
		return coupon_id_0;
	}
	public void setCoupon_id_0(String coupon_id_0) {
		this.coupon_id_0 = coupon_id_0;
	}
	
}
